import { createRouter, createWebHistory } from 'vue-router'
import HomeView from "@/views/admin/HomeView.vue";
import IndexView from "@/views/admin/IndexView.vue";
import AdminView from "@/views/admin/AdminView.vue";
import CategoryView from "@/views/admin/CategoryView.vue";
import GoodsView from "@/views/admin/GoodsView.vue";
import OrderView from "@/views/admin/OrderView.vue";
import UserView from "@/views/admin/UserView.vue";
import LoginView from "@/views/admin/LoginView.vue";
import UserLoginView from "@/views/user/LoginView.vue"
import UserHomeView from "@/views/user/HomeView.vue"
import UserIndexView from '@/views/user/IndexView.vue'
import SearchView from "@/views/user/SearchView.vue";
import RegView from "@/views/user/RegView.vue";
import Goodsview1 from "@/views/user/GoodsView.vue"
import CartView from "@/views/user/CartView.vue";
import CreateOrderView from "@/views/user/CreateOrderView.vue";
import{useTokenStore} from "@/stores/token.js";
import CenterView from "@/views/user/CenterView.vue";
import AddrListView from "@/views/user/center/AddrListView.vue";
import CollectListView from "@/views/user/center/CollectListView.vue";
import InfoView from "@/views/user/center/InfoView.vue";
import OrderListView from "@/views/user/center/OrderListView.vue";
import PasswordView from "@/views/user/center/PasswordView.vue";
import RechargeView from "@/views/user/center/RechargeView.vue";
import PayView from "@/views/user/PayView.vue";
const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes: [
      {
        path:'/',
        name:'user_home',
        redirect:'/user/index',
        component:UserHomeView,
        children: [
          {
            path:'/user/login',
            name:'user_login',
            component:UserLoginView
          },{
            path:'/user/index',
            name:'user_index',
            component:UserIndexView
          },{
            path:'/user/search/:categoryId?',
            name:'user_search',
            props: true,
            component:SearchView
          },{
            path:'/user/reg',
            name:'user_reg',
            component:RegView
          },{
            path:'/user/goods',
            name:'user_goods',
            component:Goodsview1
          },{
            path:'/user/cart',
            name:'user_cart',
            component:CartView
            }, {
                path: '/user/createOrder',
                name: 'user_createOrder',
                component: CreateOrderView
          }, {
            path: '/user/pay',
            name: 'user_pay',
            component: PayView
            }, {
                path: '/user/center',
                name: 'user_center',
            component: CenterView,
            redirect: '/user/info',
            children: [
              {
                path: '/user/addrList',
                name: 'user_addrList',
                component: AddrListView
              }, {
                path: '/user/collectList',
                name: 'user_collectList',
                component: CollectListView
              }, {
                path: '/user/info',
                name: 'user_info',
                component: InfoView
              }, {
                path: '/user/orderList',
                name: 'user_orderList',
                component: OrderListView
              }, {
                path: '/user/password',
                name: 'user_password',
                component: PasswordView
              }, {
                path: '/user/recharge',
                name: 'user_recharge',
                component: RechargeView
              }
            ]
          }
        ]
      },
    {
      path:'/admin/login',
      name:'admin_login',
      component:LoginView
    },
    {
      path: '/admin/home',
      name: 'admin_home',
      component: HomeView,
      redirect:"/admin/index",
      children:[
        {
          path:'/admin/index',
          name:'admin_index',
          component:IndexView
        },{
          path:'/admin/admin',
          name:'admin_admin',
          component:AdminView
        },{
          path:'/admin/category',
          name:'admin_category',
          component:CategoryView
        },{
          path:'/admin/goods',
          name:'admin_goods',
          component:GoodsView
        },{
          path:'/admin/order',
          name:'admin_order',
          component:OrderView
        },{
          path:'/admin/user',
          name:'admin_user',
          component:UserView
        }
      ]
    }
  ]
})
//导航守卫
//1.配置导航守卫目的？
//判断页面跳转是不是合法
//合法-跳转
//不合法-不跳转
//2应用？
//判断是否已经登录
//登录允许跳转
//未登录跳转到登录页
router.beforeEach((to, from) => {
  //to - 跳转到的为主
  //from - 原位置
  //TODO 将来还会对其它页面放行（例如：前台首页，搜索页，详情页。用户登录/注册页）
  if(to.path == '/admin/login' ||
      to.path == '/user/login' ||
      to.path == '/user/index' ||
      to.path == '/user/reg' ||
      to.path == '/user/goods'||
      to.path.startsWith("/user/search") ||
      to.path == '/'){
    return true;
  }else{
    //判断是否有token 有 - 放行 没呀 - 跳转到登录页
    const tokenStore = useTokenStore();
    if(tokenStore.tokenStr){
      return true;
    }else {
      //判断跳转到管理员登录页还是跳转到用户的登录页
      if(to.path.startsWith("/admin")){
        return "/admin/login";
      }else{
        return "/user/login";
      }
    }
  }
})

export default router
